/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ants;

import java.awt.Point;
import java.util.HashMap;
import java.util.LinkedList;

/**
 *
 * @author uhgy3k
 */
public class Player {

    /*
     * tipos: 0 - Guerrera 1 - Exploradora 2 - Trabajadora
     */
    int id_player;
    int turno;
    int score;
    int total_ants;
    int warriors;
    int workers;
    int contador_hormigas;
    int explorers;
    int cordenada_x;
    int cordenana_y;
    Point hormiguero;
    LinkedList Player_ants_warriors;
    LinkedList Player_ants_workers;
    LinkedList Player_ants_explorers;
    Ant[] Player_ants;

    public Player(int id, Point Player_hormiguero) {

        id_player = id;
        score = 0;
        total_ants = 0;

        warriors = Constantes.max_warriors;
        workers = Constantes.max_workers;
        explorers = Constantes.max_explorers;
        contador_hormigas = 1;
        cordenada_x = Player_hormiguero.x;
        cordenana_y = Player_hormiguero.y;
        hormiguero = Player_hormiguero;

        Player_ants_explorers = new LinkedList();
        Player_ants_warriors = new LinkedList();
        Player_ants_workers = new LinkedList();
        Player_ants = new Ant[warriors+workers+explorers+1];

        /*
         * Crear cada lista de hormigas, guerreras etc..
         */        
        crear_ants(Player_ants_warriors, contador_hormigas, warriors, Constantes.warrior_id);
        crear_ants(Player_ants_explorers, contador_hormigas, explorers, Constantes.explorer_id);
        crear_ants(Player_ants_workers, contador_hormigas, workers, Constantes.worker_id);
    }

    /*
     * tipos: 0 - Guerrera 1 - Exploradora 2 - Trabajadora
     */
    void crear_ants(LinkedList lista_hormigas, int id_inicialHormiga, int max_hormigas, int id_hormiga) {
        
        switch (id_hormiga) {

            case 0:

                creador_hormigas(lista_hormigas, id_inicialHormiga, max_hormigas, 0);

                break;

            case 1:

                creador_hormigas(lista_hormigas, id_inicialHormiga, max_hormigas, 1);

                break;

            case 2:

                creador_hormigas(lista_hormigas, id_inicialHormiga, max_hormigas, 2);

                break;

        }

    }

    void creador_hormigas(LinkedList lista_hormigas, int id_inicialHormiga, int max_hormigas, int i) {

        Ant hormiga;

        for (int a = 0; a < max_hormigas; a++) {            
            hormiga = new Ant(contador_hormigas, i, cordenada_x, cordenana_y);
            Player_ants[contador_hormigas++] = hormiga;
            lista_hormigas.add(hormiga);
            hormiga.jugador = id_player;

        }

    }

    void set_totalPlayerAnts() {

        total_ants = warriors + workers + explorers;

    }

    public int get_totalPlayerAnts() {

        return total_ants;

    }

    void set_totalWarriors(int antWarrior) {
        warriors = antWarrior;

    }

    void set_totalExplorers(int antExplorer) {
        explorers = antExplorer;

    }

    void set_totalWorkers(int antWorker) {

        workers = antWorker;

    }

    public int get_totalWarriors() {

        return warriors;
    }

    public int get_totalExplorers() {

        return explorers;
    }

    public int get_totalWorkers() {

        return workers;
    }

    void set_score(int cantidad_comida_recolectada) {

        score = cantidad_comida_recolectada;
    }

    public int get_score() {

        return score;
    }

    void set_actualTurn(int turn) {

        turno = turn;
    }

    public int get_actualTurn() {

        return turno;
    }
}